package com.yxinsur.imc.business.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxinsur.imc.common.core.domain.BaseImcEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.yxinsur.imc.common.annotation.Excel;
import com.yxinsur.imc.common.core.domain.BaseEntity;

/**
 * 保单对象 imc_order
 *
 * @author imc
 * @date 2021-03-18
 */
public class ImcOrder extends BaseImcEntity
{
    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.AUTO)
    private Long id;

    /** 保单号，合同号 */
    @Excel(name = "保单号，合同号")
    private String policyCode;

    /** 投保单号 */
    @Excel(name = "投保单号")
    private String proposalCode;

    /** 当前保单服务人员 */
    @Excel(name = "当前保单服务人员")
    private Long brokerId;

    /** 原始保单代理人 */
    @Excel(name = "原始保单代理人")
    private Long initBrokerId;

    /** 保险公司 供应商id  */
    @Excel(name = "供应商id ")
    private Long repoSupplierId;

    /** 录单机构id（并非租户机构id） */
    @Excel(name = "录单机构id", readConverterExp = "并=非租户机构id")
    private Long inputOrgId;

    /** 结算机构id（并非租户机构id） */
    @Excel(name = "结算机构id")
    private Long settleOrgId;

    /** 保单主状态 */
    @Excel(name = "保单主状态")
    private String orderStatusCode;

    /** 保单总保费 */
    @Excel(name = "保单总保费")
    private BigDecimal firstPrem;

    /** 保单总标准保费 */
    @Excel(name = "保单总标准保费")
    private BigDecimal standPrem;

    /** 投保日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "投保日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date applyDate;

    /** 撤单日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "撤单日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date cancelDate;

    /** 撤单原因 */
    @Excel(name = "撤单原因")
    private String cancelCauseNote;

    /** 承保日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "承保日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date insureDate;

    /** 保单生效日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "保单生效日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date effectiveDate;

    /** 保单失效日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "保单失效日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date expiredDate;

    /** 客户回执签收时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "客户回执签收时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date custAckDate;

    /** 回执录入时间(回执录入系统时间) */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "回执录入时间(回执录入系统时间)", width = 30, dateFormat = "yyyy-MM-dd")
    private Date ackDate;

    /** 保单终止日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "保单终止日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 供应商客户回访时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "供应商客户回访时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date revisitDate;

    /** 保单终止原因 */
    @Excel(name = "保单终止原因")
    private String endCause;

    /** 保单终止原因 */
    @Excel(name = "备注")
    private String endCauseNote;

    @Excel(name = "保单中止时间")
    private Date suspensionDate;

    @Excel(name = "保单中止原因")
    private String suspensionCause;

    @Excel(name = "客户告知书签署时间",dateFormat = "yyyy-MM-dd")
    private Date customNotifiedDate;

    @Excel(name = "客户告知书url")
    private String customNotifiedUrl;

    /** 备注 */
    @Excel(name = "备注")
    private String remark;

    /** 删除标记 */
    @Excel(name = "删除标记")
    private String isDeleted;

    /** 租户id,一个租户id唯一对一个机构id（默认机构id为根节点id暨法人机构） */
    @Excel(name = "租户id,一个租户id唯一对一个机构id", readConverterExp = "默=认机构id为根节点id暨法人机构")
    private Long tenantId;

    public Long getSettleOrgId() {
        return settleOrgId;
    }

    public void setSettleOrgId(Long settleOrgId) {
        this.settleOrgId = settleOrgId;
    }


    private String isSelf;

    public String getIsSelf() {
        return isSelf;
    }

    public void setIsSelf(String isSelf) {
        this.isSelf = isSelf;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }
    public void setPolicyCode(String policyCode)
    {
        this.policyCode = policyCode;
    }

    public String getPolicyCode()
    {
        return policyCode;
    }
    public void setProposalCode(String proposalCode)
    {
        this.proposalCode = proposalCode;
    }

    public String getProposalCode()
    {
        return proposalCode;
    }
    public void setBrokerId(Long brokerId)
    {
        this.brokerId = brokerId;
    }

    public Long getBrokerId()
    {
        return brokerId;
    }
    public void setInitBrokerId(Long initBrokerId)
    {
        this.initBrokerId = initBrokerId;
    }

    public Long getInitBrokerId()
    {
        return initBrokerId;
    }

    public Long getRepoSupplierId() {
        return repoSupplierId;
    }

    public void setRepoSupplierId(Long repoSupplierId) {
        this.repoSupplierId = repoSupplierId;
    }

    public void setInputOrgId(Long inputOrgId)
    {
        this.inputOrgId = inputOrgId;
    }

    public Long getInputOrgId()
    {
        return inputOrgId;
    }
    public void setOrderStatusCode(String orderStatusCode)
    {
        this.orderStatusCode = orderStatusCode;
    }

    public String getOrderStatusCode()
    {
        return orderStatusCode;
    }
    public void setFirstPrem(BigDecimal firstPrem)
    {
        this.firstPrem = firstPrem;
    }

    public BigDecimal getFirstPrem()
    {
        return firstPrem;
    }
    public void setStandPrem(BigDecimal standPrem)
    {
        this.standPrem = standPrem;
    }

    public BigDecimal getStandPrem()
    {
        return standPrem;
    }
    public void setApplyDate(Date applyDate)
    {
        this.applyDate = applyDate;
    }

    public Date getApplyDate()
    {
        return applyDate;
    }
    public void setCancelDate(Date cancelDate)
    {
        this.cancelDate = cancelDate;
    }

    public Date getCancelDate()
    {
        return cancelDate;
    }
    public void setCancelCauseNote(String cancelCauseNote)
    {
        this.cancelCauseNote = cancelCauseNote;
    }

    public String getCancelCauseNote()
    {
        return cancelCauseNote;
    }
    public void setInsureDate(Date insureDate)
    {
        this.insureDate = insureDate;
    }

    public Date getInsureDate()
    {
        return insureDate;
    }
    public void setEffectiveDate(Date effectiveDate)
    {
        this.effectiveDate = effectiveDate;
    }

    public Date getEffectiveDate()
    {
        return effectiveDate;
    }
    public void setExpiredDate(Date expiredDate)
    {
        this.expiredDate = expiredDate;
    }

    public Date getExpiredDate()
    {
        return expiredDate;
    }
    public void setCustAckDate(Date custAckDate)
    {
        this.custAckDate = custAckDate;
    }

    public Date getCustAckDate()
    {
        return custAckDate;
    }
    public void setAckDate(Date ackDate)
    {
        this.ackDate = ackDate;
    }

    public Date getAckDate()
    {
        return ackDate;
    }
    public void setEndDate(Date endDate)
    {
        this.endDate = endDate;
    }

    public Date getEndDate()
    {
        return endDate;
    }
    public void setEndCauseNote(String endCauseNote)
    {
        this.endCauseNote = endCauseNote;
    }

    public String getEndCauseNote()
    {
        return endCauseNote;
    }
    public void setIsDeleted(String isDeleted)
    {
        this.isDeleted = isDeleted;
    }

    public String getIsDeleted()
    {
        return isDeleted;
    }
    public Long getTenantId()
    {
        return tenantId;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public void setTenantId(Long tenantId) {
        this.tenantId = tenantId;
    }

    public String getEndCause() {
        return endCause;
    }

    public void setEndCause(String endCause) {
        this.endCause = endCause;
    }

    public Date getSuspensionDate() {
        return suspensionDate;
    }

    public void setSuspensionDate(Date suspensionDate) {
        this.suspensionDate = suspensionDate;
    }

    public String getSuspensionCause() {
        return suspensionCause;
    }

    public void setSuspensionCause(String suspensionCause) {
        this.suspensionCause = suspensionCause;
    }

    public Date getCustomNotifiedDate() {
        return customNotifiedDate;
    }

    public void setCustomNotifiedDate(Date customNotifiedDate) {
        this.customNotifiedDate = customNotifiedDate;
    }

    public String getCustomNotifiedUrl() {
        return customNotifiedUrl;
    }

    public void setCustomNotifiedUrl(String customNotifiedUrl) {
        this.customNotifiedUrl = customNotifiedUrl;
    }

    public Date getRevisitDate() {
        return revisitDate;
    }

    public void setRevisitDate(Date revisitDate) {
        this.revisitDate = revisitDate;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("policyCode", getPolicyCode())
            .append("proposalCode", getProposalCode())
            .append("brokerId", getBrokerId())
            .append("initBrokerId", getInitBrokerId())
            .append("repoSupplierId", getRepoSupplierId())
            .append("inputOrgId", getInputOrgId())
            .append("orderStatusCode", getOrderStatusCode())
            .append("firstPrem", getFirstPrem())
            .append("standPrem", getStandPrem())
            .append("applyDate", getApplyDate())
            .append("cancelDate", getCancelDate())
            .append("cancelCauseNote", getCancelCauseNote())
            .append("insureDate", getInsureDate())
            .append("effectiveDate", getEffectiveDate())
            .append("expiredDate", getExpiredDate())
            .append("custAckDate", getCustAckDate())
            .append("ackDate", getAckDate())
            .append("endDate", getEndDate())
            .append("endCauseNote", getEndCauseNote())
            .append("suspensionDate",getSuspensionDate())
            .append("suspensionCause",getSuspensionCause())
            .append("customNotifiedDate",getCustomNotifiedDate())
            .append("customNotifiedUrl",getCustomNotifiedUrl())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("isDeleted", getIsDeleted())
            .append("tenantId", getTenantId())
            .toString();
    }
}
